//
//  main.m
//  课堂代码One
//
//  Created by dllo on 16/7/11.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Province.h"
#import "City.h"
#import "Distric.h"
#import "TimeCity.h"
int main(int argc, const char * argv[]) {
      NSString *path = @"/Users/dllo/Desktop/课堂代码One/课堂代码One/area.txt";
      NSString *sourceString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
      NSArray *allArray = [sourceString componentsSeparatedByString:@"\n"];
      NSMutableArray *allProvinceArray = [NSMutableArray array];
#if 0
      for (NSString *area in allArray) {
            if (![area hasPrefix:@" "]) {
                  NSMutableDictionary *proDic = [NSMutableDictionary dictionary];
                  NSMutableArray *cityArr = [NSMutableArray array];
                  [proDic setObject:area forKey:@"provinceName"];
                  [proDic setObject:cityArr forKey:@"cityGroup"];
                  [allProvinceArray addObject:proDic];
            }else if (![area hasPrefix:@"   "]) {
                  NSMutableDictionary *cityDic = [NSMutableDictionary dictionary];
                  NSMutableArray *districArr = [NSMutableArray array];
                  [cityDic setObject:area forKey:@"cityName"];
                  [cityDic setObject:districArr forKey:@"districtGroup"];
                  [[[[allProvinceArray lastObject]objectForKey:@"cityGroup"]objectForKey:@"districtGroup"]addObject:area];
                  
            }
      }
      for (NSString *area in allArray) {
            if (![area hasPrefix:@" "]) {
                  Province *province = [[Province alloc]initWithName:area];
                  [allProvinceArray addObject:province];
                  [province release];
                  
            }else if (![area hasPrefix:@"   "]){
                  City *city = [[City alloc]initWithName:area];
                  Province *province = [allProvinceArray lastObject];
                  [province.arr addObject:city];
                  [city release];
            }else{
            
                  Distric *distric = [[Distric alloc]initWithName:area];
                  Province *province = [allProvinceArray lastObject];
                  City *city = [province.arr lastObject];
                  [city.arr addObject:distric];
                  [distric release];
            }
        
      }
      
      NSString *locationPath = @"/Users/dllo/Desktop/课堂代码One/课堂代码One/Location1.txt";
      NSString *source = [NSString stringWithContentsOfFile:locationPath encoding:NSUTF8StringEncoding error:nil];
      NSArray *allLocationArray = [source componentsSeparatedByString:@","];
      NSMutableArray *allCityDicArray = [NSMutableArray array];
      for (NSString *city in allLocationArray) {
            NSArray *arrayCity = [city componentsSeparatedByString:@"|"];
            NSMutableDictionary *cityDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:[arrayCity firstObject], @"cityName", [arrayCity lastObject], @"cityNumber", nil];
            [allCityDicArray addObject:cityDic];
            
      }
      NSSortDescriptor *sort = [[NSSortDescriptor alloc]initWithKey:@"cityNumber" ascending:YES];
      [allCityDicArray sortUsingDescriptors:@[sort]];
      NSMutableArray *fiallyArray = [NSMutableArray array];
      [sort release];
      for (NSMutableDictionary *cityDic in allCityDicArray) {
            NSString *cityNumber = cityDic[@"cityNumber"];
            if ([cityNumber hasSuffix:@"0000"]) {
                  // 以自身字典生成新的字典,不是直接赋值,而是开辟新的空间初始化
                  NSMutableDictionary *proDic = [NSMutableDictionary dictionaryWithDictionary:cityDic];
                  // 添加新的键值对,放市组
                  [proDic setObject:[NSMutableArray array] forKey:@"cityArray"];
                  [fiallyArray addObject:proDic];
            } else if ([cityNumber hasSuffix:@"00"]) {
                  NSMutableArray *cityArray = [[fiallyArray lastObject] objectForKey:@"cityArray"];
                  NSMutableDictionary *dicCity = [NSMutableDictionary dictionaryWithDictionary:cityDic];
                  [dicCity setObject:[NSMutableArray array] forKey:@"districArray"];
                  [cityArray addObject:dicCity];
            } else {
                  // 注意代码尽量分开写
                  NSMutableDictionary *proDic = [fiallyArray lastObject];
                  NSMutableArray *cityArray = proDic[@"cityArray"];
                  NSMutableDictionary *dicCity = [cityArray lastObject];
                  NSMutableArray *districArray = dicCity[@"districArray"];
                  NSMutableDictionary *districDic = [NSMutableDictionary dictionaryWithDictionary:cityDic];
                  [districArray addObject:districDic];
            }
      }
#endif
#if 1
      NSString *locationPath = @"/Users/dllo/Downloads/Province-City-zone 2/Province-City-zone/Location1.txt";
      NSString *source = [NSString stringWithContentsOfFile:locationPath encoding:NSUTF8StringEncoding error:nil];
      NSArray *allLocationArray = [source componentsSeparatedByString:@","];
      NSMutableArray *allCityDicArray = [NSMutableArray array];
      for (NSString *cityString in allLocationArray) {
            NSArray *city = [cityString componentsSeparatedByString:@"|"];
            // firstObject 对数组越界醉了优化,不会报错只会返回空值,比array[0] 好
            TimeCity *timeCity = [[TimeCity alloc] initWithName:[city firstObject] cityNumber:[city lastObject]];
            [allCityDicArray addObject:timeCity];
            [timeCity release];
      }
      // 排序
      NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"cityNumber" ascending:YES];
      [allCityDicArray sortUsingDescriptors:@[sortDescriptor]];
      //        NSLog(@"%@",allCityDicArray);
      [sortDescriptor release];
      NSMutableArray *finalArray = [NSMutableArray array];
      for (TimeCity *timeCity in allCityDicArray) {
            if ([timeCity.cityNumber hasSuffix:@"0000"]) {
                  Province *pro = [Province districWithTimeCity:timeCity];
                  [finalArray addObject:pro];
            } else if ([timeCity.cityNumber hasSuffix:@"00"]) {
                  Province *pro = [finalArray lastObject];
                  City *city = [City districWithTimeCity:timeCity];
                  [pro.arr addObject:city];
            } else {
                  Province *pro = [finalArray lastObject];
                  City *city = [pro.arr lastObject];
                  Distric *distrc = [Distric districWithTimeCity:timeCity];
                  [city.arr addObject:distrc];
            }
      }
      NSLog(@"%@",finalArray);
      
      
#endif


       return 0;
}
